### (under development)

## avgdl - abstract video game development language

a language to describe video games in an abstract way, in order to allow
compilation to different languages and platforms.
this language is not meant to be user friendly. its purpose is for other
languages to compile to this one which in turn can compile to any given platform.

## status

currently this project supports very few features inside a game, and can compile to a python game

## how does it work

the concept is that, a user-friendly language can be created, which describes a video game.
that language can then compile to this language, which in turn is responsible to support
as many platforms as possible.
so once this language supports a new platform, all the existing languages can automatically
compile directly to that platform without spending extra time

## compile targets

supported compilation targets:

* python: a game can be compiled to python code using opengl and pygame

## project structure

* `documentation/`: folder containing everything you need to understand this project better
* `target/`: contains all the supported target languages
* `examples/`: contains example game data that are ready to be compiled
* `src/`: contains all source code
* `game_structure`: a file describing the abstract data structure of a video game.
for more information on its syntax and what its for, see `documentation/game_structure`
* more coming soon

## what it supports so far

in its current state, a game can have only one object with 3 vertices, 1 color and 1 matrix.

the plan is to support an infinite number of worlds, each one having infinite number of objects with custom data

## how to compile

to compile the hello triangle file from the examples, move to the projects directory from the terminal and run

`perl -Isrc src/main.pl -t python examples/hello_triangle`

this will create a folder in the current directory called "python_engine", which has everything inside to run a game (standalone).
to run the game type:

`python python_engine/engine.py`

in my case I used `python2` since I have pygame libraries for python2 only, adjust to your own system
